/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.iscmoh.ebdrl.java.model.core;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author Isaac
 */
@Entity
@Table(name="Editoras")
public class Editora implements Comparable<Editora>, Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private String nome;
    private String website;
    private String email;
    private String telefone;
    @OneToMany(mappedBy="editora")
    private List<Revista> revistas = new ArrayList<Revista>();

    public Editora() {
    }

    public Editora(String nome) {
        this.nome = nome;
    }

    public Editora(String nome, String website, String email, String telefone) {
        this.nome = nome;
        this.website = website;
        this.email = email;
        this.telefone = telefone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }

    public void addRevista(Revista revista){
        this.revistas.add(revista);
    }

    public void addAllRevistas(Collection<Revista> revistas){
        this.revistas.addAll(revistas);
    }
    
    public boolean remove(Revista revista){
        return revistas.remove(revista);
    }
    
    public boolean removeAllRevistas(Collection<Revista> revistas){
        return this.revistas.removeAll(revistas);
    }

    @Override
    public String toString() {
        return "[" + id +
                nome + "#" +
                website + "#" +
                email + "#" +
                telefone + "]";
    }

    public int compareTo(Editora outraEditora) {
        return id.compareTo(outraEditora.getId());
    }
}
